C语言性能优化与代码调优实战
📚 共计 30 章节
01
性能优化概述
为什么要做性能优化?性能指标(吞吐量、延迟、CPU占用率)与优化流程。
基础
指标
02
编译器优化基础
GCC/Clang常用优化选项(-O0 ~ -Os),优化级别对代码的影响。
GCC
编译
03
数据结构选择
数组 vs 链表 vs 哈希表,不同场景下的性能差异与选择策略。
内存
算法
04
内存布局与缓存优化
CPU缓存原理、缓存行对齐、局部性原理、避免缓存抖动。
缓存
局部性
05
循环优化
循环展开、循环交换、循环合并、减少循环内分支。
循环
分支
06
分支预测优化
减少难以预测的分支、使用likely/unlikely宏、查表代替分支。
分支
预测
07
函数调用优化
内联函数、减少函数调用开销、尾递归优化。
内联
递归
08
内存分配优化
栈分配 vs 堆分配、内存池、对象池、减少动态分配。
内存池
栈
09
字符串处理优化
避免重复分配、使用栈缓冲区、字符串拼接优化。
字符串
缓冲区
10
位运算技巧
用位运算代替乘除法、位掩码、快速判断奇偶、交换变量。
位运算
技巧
11
SIMD指令集入门
SSE/AVX基础、向量化编程、自动向量化与手动向量化。
SIMD
向量化
12
多线程性能优化
线程创建开销、锁竞争、无锁编程、原子操作。
多线程
锁
13
并发数据结构
无锁队列、读写锁、RCU、并发哈希表。
无锁
RCU
14
内存屏障与原子操作
volatile关键字、内存序(memory_order)、CAS操作。
原子
屏障
15
性能分析工具(上)
gprof使用、函数调用图、热点函数识别。
gprof
分析
16
性能分析工具(下)
perf使用、硬件计数器、火焰图生成与分析。
perf
火焰图
17
代码剖析与微基准测试
微基准测试陷阱、Google Benchmark库、统计显著性。
Benchmark
测试
18
I/O优化
缓冲I/O vs 直接I/O、mmap、异步I/O、io_uring。
I/O
mmap
19
网络编程优化
epoll vs select/poll、Reactor模式、零拷贝技术。
epoll
零拷贝
20
编译时优化
常量折叠、死代码消除、内联展开、模板元编程。
编译
元编程
21
链接时优化
LTO(链接时优化)、跨模块内联、减少符号表大小。
LTO
链接
22
代码大小优化
-Os优化、代码压缩、函数节、去除调试信息。
-Os
压缩
23
实时系统优化
确定性、最坏情况执行时间(WCET)、避免动态内存。
实时
WCET
24
GPU编程基础
CUDA入门、数据传输优化、核函数优化。
CUDA
GPU
25
OpenMP并行优化
并行循环、任务并行、归约操作、调度策略。
OpenMP
并行
26
算法复杂度优化
大O表示法、空间换时间、预计算、缓存结果。
复杂度
预计算
27
预取与预加载
软件预取指令、数据预取、指令预取。
预取
预加载
28
异常与错误处理优化
避免异常开销、错误码 vs 异常、断言使用。
异常
断言
29
跨平台性能优化
不同CPU架构差异、字节序、对齐要求、可移植性。
跨平台
字节序
30
综合实战案例
从10秒到100毫秒——一个真实项目的性能优化全过程。
实战
案例